home *** CD-ROM | disk | FTP | other *** search
/ The Arsenal Files 8 / The Arsenal Files Collection #8 (Arsenal Computer) (1996).ISO / pcboard / sugst302.zip / SUGGEST.PPE (.txt) < prev    next >
PCBoard Programming Language Executable  |  1996-09-27  |  19KB  |  894 lines

  1. ;------------------------------------------------------------------------------
  2. ;                                                   .ss.
  3. ;                                                   `²²'
  4. ;             .,sS$Ss,,s$  .,sS$$$Ss.  .,sS$Ss,,s$ .ss.  .sSs.
  5. ;           .d$$²^°²$$$$'.d$P²°^^²$P'.d$$²^°²$$$$'.$$$' .$$$²Sb,.
  6. ;           $$$'   .$$$' $$$²Sçsµ²' .$$$'   .$$$'.$$$' .$$$'  `$$b.
  7. ;           $$$b,,d$$$' ,$$$b,....,s$$$$b,,d$$$'.$$$;.,$$$'    ;$$$
  8. ;           `²S$$S²²S$$S²°²S$$$$S²°°²S$$$$$$',$$S²°²S$S'.sS$$$P²'
  9. ;                                    .sS²°$$$²²°"'       d²°'
  10. ;                                  .$$²  .$$'
  11. ;                                  $$$.,d$$'
  12. ;                                  `²S$$S²'
  13. ;------------------------------------------------------------------------------
  14. ; P.P.L.X. 2.OO                          (C)1996 - Lone Runner / AEGiS CoRP'96 
  15. ;------------------------------------------------------------------------------
  16. ; PPE 3.2O (Encryption type I) - Analysis ON - Postprocessing ON
  17. ;------------------------------------------------------------------------------
  18.  
  19.     Boolean  BOOLEAN001
  20.     Boolean  BOOLEAN002
  21.     Boolean  BOOLEAN003
  22.     Integer  INTEGER001
  23.     Integer  INTEGER002
  24.     Integer  INTEGER003
  25.     Integer  INTEGER004
  26.     Integer  INTEGER005
  27.     Integer  INTEGER006
  28.     Integer  INTEGER007
  29.     Integer  TINTEGER008(1)
  30.     Integer  INTEGER009
  31.     Integer  INTEGER010
  32.     Integer  INTEGER011
  33.     Integer  INTEGER012
  34.     Integer  INTEGER013
  35.     Integer  INTEGER014
  36.     Integer  INTEGER015
  37.     Integer  INTEGER016
  38.     Integer  INTEGER017
  39.     Integer  TINTEGER018(99)
  40.     String   STRING001
  41.     String   STRING002
  42.     String   STRING003
  43.     String   STRING004
  44.     String   STRING005
  45.     String   STRING006
  46.     String   TSTRING007(1)
  47.     String   STRING008
  48.     String   STRING009
  49.     String   STRING010
  50.     String   STRING011
  51.     String   STRING012
  52.     String   STRING013
  53.     String   TSTRING014(1)
  54.     String   STRING015
  55.     String   STRING016
  56.     String   STRING017
  57.     String   STRING018
  58.     String   STRING019
  59.     String   STRING020
  60.     String   STRING021
  61.     String   STRING022
  62.     String   STRING023
  63.     String   TSTRING024(3)
  64.     String   STRING025
  65.     String   STRING026
  66.     String   STRING027
  67.     String   STRING028
  68.     String   STRING029
  69.     String   STRING030
  70.     String   STRING031
  71.     String   STRING032
  72.     String   STRING033
  73.     String   STRING034
  74.     String   STRING035
  75.     String   TSTRING036(21)
  76.     String   STRING037
  77.     String   TSTRING038(1)
  78.     String   STRING039
  79.     String   STRING040
  80.     String   STRING041
  81.     String   STRING042
  82.     String   STRING043
  83.     String   STRING044
  84.     String   STRING045
  85.     String   STRING046
  86.     String   STRING047
  87.     String   STRING048
  88.     String   STRING049
  89.     String   STRING050
  90.     String   STRING051
  91.     String   STRING052
  92.     String   STRING053
  93.     String   STRING054
  94.     String   STRING055
  95.     String   STRING056
  96.     String   STRING057
  97.     String   STRING058
  98.     String   STRING059
  99.     String   STRING060
  100.     String   STRING061
  101.     Declare  Procedure PROC001()
  102.     Declare  Procedure PROC002()
  103.  
  104. ;------------------------------------------------------------------------------
  105.  
  106.     GetUser
  107.     FOpen 6, PPEPath() + PPEName() + ".Sec", 0, 0
  108.     :LABEL001
  109.     If (Ferr(6)) Goto LABEL002
  110.     FGet 6, STRING021
  111.     If (STRING021 == CurSec()) Then
  112.         Newlines 2
  113.         PrintLn "@X10┌─────────────────────────────────────────────────────────────────────────────@X19┐@X0F"
  114.         PrintLn "@X10│ @X1E░▒▓█ @X1BWe are sorry, but the suggestion door is only for subscriber use.@X1E █▓▒░ @X19│@X0F"
  115.         PrintLn "@X10└@X19─────────────────────────────────────────────────────────────────────────────┘@X0F"
  116.         Newlines 1
  117.         Delay (5 * 182) / 10
  118.     Else
  119.         Goto LABEL001
  120.         :LABEL002
  121.         FClose 6
  122.         GetToken STRING055
  123.         GetUser
  124.         If (Exist(PPEPath() + "door.lck")) Goto LABEL003
  125.         FOpen 1, PPEPath() + "door.lck", 2, 0
  126.         FPutLn 1, "Door In Use By " + Mixed(U_Name()) + " - Security Lock Enabled!"
  127.         FClose 1
  128.         Goto LABEL004
  129.         Goto LABEL004
  130.         :LABEL003
  131.         INTEGER012 = PcbNode()
  132.         FAppend 1, PPEPath() + "Waiting.Lst", 2, 0
  133.         FPutLn 1, INTEGER012
  134.         FClose 1
  135.         Newlines 1
  136.         PrintLn "@X04█@X4E· @X0A Sorry but another user is in the Suggestion Box, try again in a minute @X04█@X4E·@X04█@X0F"
  137.         End
  138.         :LABEL004
  139.         If (Exist(PPEPath() + "UNIVERSL.KEY")) Then
  140.             PROC001()
  141.         ElseIf (Exist(PPEPath() + "UNI.KEY")) Then
  142.             PROC002()
  143.         Else
  144.             If (Exist(PPEPath() + PPEName() + ".key")) Goto LABEL005
  145.             BOOLEAN003 = 0
  146.             Goto LABEL006
  147.             :LABEL005
  148.             FOpen 2, PPEPath() + PPEName() + ".key", 0, 0
  149.             FGet 2, STRING050
  150.             FGet 2, STRING051
  151.             FGet 2, STRING052
  152.             FClose 2
  153.             STRING053 = Mid(STRING050, 2, 1)
  154.             STRING054 = Mid(STRING051, 5, 1)
  155.             STRING053 = Abs(Asc(STRING053) + 77 - 100)
  156.             STRING054 = Abs(Asc(STRING054) + 77 - 100)
  157.             If ((Mid(STRING052, 1, 2) == STRING053) && (Mid(STRING052, 79, 2) == STRING054)) Then
  158.                 BOOLEAN003 = 1
  159.             Else
  160.                 BOOLEAN003 = 0
  161.             Endif
  162.         Endif
  163.         :LABEL006
  164.         If (BOOLEAN003 == 1) Then
  165.             Cls
  166.             PrintLn "@X1C░▒▓█ @X1EThe Suggestion Box! v3.02 @X1C█▓▒░          @X1F(c)1996 Practical Computer Services@X0F"
  167.             Delay (1 * 182) / 10
  168.         Else
  169.             Cls
  170.             For INTEGER003 = 1 To 10
  171.                 PrintLn "@X0EThis is @X8CUNREGISTERED @X0Esoftware - Please encourage your sysop to register it!@X0F"
  172.                 PrintLn "               @X0APractical Computer Services Suggestion Box@X0F"
  173.                 Delay (1 * 182) / 10
  174.                 If (INTEGER003 == 10) Delay 2 * 182 / 10
  175.             Next
  176.         Endif
  177.         BOOLEAN002 = 1
  178.         If (Upper(STRING055) == "QUIK") BOOLEAN002 = 0
  179.         STRING010 = "■"
  180.         INTEGER007 = 15
  181.         RdUNet PcbNode()
  182.         WrUNet PcbNode(), UN_Stat(), UN_Name(), "Running " + PPEName(), "", ""
  183.         If (Exist(PPEPath() + PPEName() + ".Nam")) Goto LABEL007
  184.         FCreate 7, PPEPath() + PPEName() + ".nam", 2, 0
  185.         FClose 7
  186.         :LABEL007
  187.         STRING001 = ReadLine(PPEPath() + "header", 1)
  188.         STRING002 = ReadLine(PPEPath() + "header", 2)
  189.         STRING003 = ReadLine(PPEPath() + "header", 3)
  190.         Log "Suggestion Box! - Access", 0
  191.         If (Exist(PPEPath() + PPEName() + ".Cfg")) Goto LABEL008
  192.         FCreate 7, PPEPath() + PPEName() + ".Cfg", 2, 0
  193.         FPutLn 7, "0"
  194.         FPutLn 7, "YES"
  195.         FClose 7
  196.         Cls
  197.         PrintLn "@X0E        You are the first user!  Please give us your suggestion below.@X0F"
  198.         Newlines 1
  199.         Gosub LABEL010
  200.         :LABEL008
  201.         INTEGER006 = ReadLine(PPEPath() + PPEName() + ".cfg", 1)
  202.         STRING056 = ReadLine(PPEPath() + PPEName() + ".CFG", 2)
  203.         Redim TSTRING007, INTEGER006
  204.         Redim TSTRING014, INTEGER006
  205.         Redim TINTEGER008, INTEGER006
  206.         Redim TSTRING038, INTEGER006
  207.         INTEGER004 = 1
  208.         INTEGER005 = INTEGER006
  209.         If (Upper(STRING056) == "YES") Then
  210.             BOOLEAN001 = 1
  211.         Else
  212.             BOOLEAN001 = 0
  213.         Endif
  214.         If (BOOLEAN002) Goto LABEL018
  215.         BOOLEAN002 = 0
  216.         :LABEL009
  217.         FCloseAll
  218.         FOpen 1, PPEPath() + PPEName() + ".DAT", 0, 0
  219.         Gosub LABEL016
  220.         If (BOOLEAN001) Then
  221.             PrintLn "                                                                      @X0EYea  @X0CNey@X0F"
  222.         Else
  223.             Newline
  224.         Endif
  225.         For INTEGER003 = INTEGER004 To INTEGER005
  226.             FGet 1, STRING009
  227.             STRING025 = Left(STRING009, 5)
  228.             STRING025 = LTrim(STRING025, "0")
  229.             If (Len(STRING025) == 0) STRING025 = 0
  230.             STRING026 = Mid(STRING009, 7, 5)
  231.             STRING026 = LTrim(STRING026, "0")
  232.             If (Len(STRING026) == 0) STRING026 = 0
  233.             STRING015 = Mid(STRING009, 13, 6)
  234.             STRING042 = Mid(STRING009, 20, 1)
  235.             STRING004 = Mid(STRING009, 22, 74)
  236.             STRING004 = Upper(Left(STRING004, 1)) + Mid(STRING004, 2, 73)
  237.             If (STRING042 == "Y") Then
  238.                 STRING044 = "@X8D@X0B"
  239.             Else
  240.                 STRING044 = " "
  241.             Endif
  242.             If (BOOLEAN001 == 0) Then
  243.                 If ((INTEGER003 > 0) && (INTEGER003 < 10)) PrintLn " @X0E ", INTEGER003, "@X0A)@X0B", STRING044, STRING004
  244.                 If ((INTEGER003 >= 10) && (INTEGER003 < 100)) PrintLn "@X0E ", INTEGER003, "@X0A)@X0B", STRING044, STRING004
  245.                 If ((INTEGER003 >= 100) && (INTEGER003 < 1000)) PrintLn "@X0E", INTEGER003, "@X0A)@X0B", STRING044, STRING004
  246.             Else
  247.                 If ((INTEGER003 > 0) && (INTEGER003 < 10)) PrintLn " @X0E ", INTEGER003, "@X0A)@X0B", STRING044, Left(STRING004, 64) , "@X09@POS:66@ ", STRING025, "@POS:76@", STRING026
  248.                 If ((INTEGER003 >= 10) && (INTEGER003 < 100)) PrintLn "@X0E ", INTEGER003, "@X0A)@X0B", STRING044, Left(STRING004, 64) , "@X09@POS:66@ ", STRING025, "@POS:76@", STRING026
  249.                 If ((INTEGER003 >= 100) && (INTEGER003 < 1000)) PrintLn "@X0E", INTEGER003, "@X0A)@X0B", STRING044, Left(STRING004, 64) , "@X09@POS:66@ ", STRING025, "@POS:76@", STRING026
  250.             Endif
  251.             If (INTEGER003 >= INTEGER007) Then
  252.                 Gosub LABEL015
  253.                 Gosub LABEL016
  254.             Endif
  255.         Next
  256.         FClose 1
  257.         PrintLn "@X03───────────────────────────────────────────────────────────────────────────────@X0F"
  258.         If (CurSec() >= SysopSec()) PrintLn " @X03Sysop only commands - @X0A(@X0ED@X0A)@X03elete a Suggestion / @X0A(@X0EE@X0A)@X03dit the notes file"
  259.         InputStr " @X0B@X0A(@X0EV@X0A)@X0Bote / @X0A(@X0EA@X0A)@X0Bdd your own / @X0A(@X0EH@X0A)@X0Belp / @X0A(@X0ET@X0A)@X0Boggle / @X0A(@X0EN@X0A)@X0Botes @X8D@X0F @X0B/ @X0A(@X0CQ@X0A)@X0Cuit to BBS _", STRING005, 15, 1, "VAHQTBNDE", 0 + 8
  260.         If ((STRING005 == "T") && (BOOLEAN001 == 0)) Then
  261.             BOOLEAN001 = 1
  262.             INTEGER007 = 15
  263.             Goto LABEL009
  264.         ElseIf ((STRING005 == "T") && (BOOLEAN001 == 1)) Then
  265.             BOOLEAN001 = 0
  266.             INTEGER007 = 15
  267.             Goto LABEL009
  268.         Endif
  269.         If (STRING005 == "V") Goto LABEL011
  270.         If (STRING005 == "A") Goto LABEL010
  271.         If (STRING005 == "H") Goto LABEL018
  272.         If ((STRING005 == "D") && (CurSec() >= SysopSec())) Goto LABEL019
  273.         If (STRING005 == "B") Goto LABEL026
  274.         If (STRING005 == "N") Goto LABEL027
  275.         If ((STRING005 == "E") && (CurSec() >= SysopSec())) Goto LABEL028
  276.         Select Case (STRING005)
  277.             Case "Q"
  278.                 Gosub LABEL017
  279.                 Cls
  280.                 INTEGER007 = 15
  281.                 Goto LABEL009
  282.                 If (STRING005 == "") Then
  283.                     INTEGER007 = 15
  284.                     Goto LABEL009
  285.                 Endif
  286.                 :LABEL010
  287.                 If ((INTEGER005 >= 5) && !BOOLEAN003) Then
  288.                     Backup 80
  289.                     ClrEol
  290.                     PrintLn "    @X0C Sorry but this is an @X8Cunregistered@X0C version, no more additions allowed!"
  291.                     PrintLn "@X0C  Please have your sysop register the suggestion box to remove all limitations@X0F"
  292.                     Delay (4 * 182) / 10
  293.                     INTEGER007 = 15
  294.                     BOOLEAN002 = 0
  295.                     Goto LABEL008
  296.                 Endif
  297.                 STRING008 = ""
  298.                 STRING016 = ""
  299.                 Backup 80
  300.                 ClrEol
  301.                 PrintLn "   @X0E┌──@X0BPlease enter a one line description of your suggestion @X0A(@X0C74 chars max@X0A)@X0E─┐"
  302.                 InputStr "   _", STRING008, 3, 74, Mask_Ascii(), 0
  303.                 If (Len(STRING008) == 0) Then
  304.                     INTEGER007 = 15
  305.                     Goto LABEL009
  306.                 Endif
  307.                 If (Upper(STRING008) == "Q") Then
  308.                     INTEGER007 = 15
  309.                     Goto LABEL009
  310.                 Endif
  311.                 STRING016 = Random(999999)
  312.                 STRING016 = STRING016 + "000000"
  313.                 STRING016 = Left(STRING016, 6)
  314.                 STRING008 = Strip(STRING008, ";")
  315.                 STRING008 = "00001" + STRING010 + "00000" + STRING010 + STRING016 + STRING010 + "N" + STRING010 + STRING008
  316.                 INTEGER006 = INTEGER006 + 1
  317.                 INTEGER005 = INTEGER006
  318.                 FOpen 2, PPEPath() + PPEName() + ".Cfg", 2, 0
  319.                 FPutLn 2, INTEGER005
  320.                 FClose 2
  321.                 FOpen 5, PPEPath() + PPEName() + ".DAT", 0, 0
  322.                 For INTEGER003 = 1 To INTEGER005
  323.                     FGet 5, TSTRING038(INTEGER003)
  324.                 Next
  325.                 FClose 5
  326.                 FCloseAll
  327.                 FCreate 5, PPEPath() + PPEName() + ".DAT", 2, 0
  328.                 For INTEGER003 = 1 To INTEGER005 - 1
  329.                     FPutLn 5, TSTRING038(INTEGER003)
  330.                 Next
  331.                 FPutLn 5, STRING008
  332.                 FClose 5
  333.                 FAppend 4, PPEPath() + PPEName() + ".nam", 2, 0
  334.                 FPutLn 4, STRING016 + ";" + Strip(U_Name(), " ")
  335.                 FClose 4
  336.                 INTEGER007 = 15
  337.                 BOOLEAN002 = 0
  338.                 FCloseAll
  339.                 Goto LABEL008
  340.                 :LABEL011
  341.                 Backup 80
  342.                 ClrEol
  343.                 InputStr "@X0BPlease enter the suggestion number to vote on @X0A(@X0CQ@X0A)@X0Cuit _", STRING006, 15, 3, "0123456789", 0
  344.                 If (STRING006 == "") Then
  345.                     INTEGER007 = 15
  346.                     Goto LABEL009
  347.                 Endif
  348.                 If (Upper(STRING006) == "Q") Goto LABEL009
  349.                 If ((STRING006 == 0) || (STRING006 > INTEGER006)) Goto LABEL009
  350.                 STRING022 = ReadLine(PPEPath() + PPEName() + ".DAT", STRING006)
  351.                 STRING022 = Mid(STRING022, 13, 6)
  352.                 FOpen 2, PPEPath() + PPEName() + ".Nam", 0, 0
  353.                 :LABEL012
  354.                 If (Ferr(2)) Goto LABEL013
  355.                 FGet 2, STRING013
  356.                 Tokenize STRING013
  357.                 GetToken STRING012
  358.                 GetToken STRING011
  359.                 If ((STRING011 == Strip(U_Name(), " ")) && (STRING012 == STRING022)) Then
  360.                     Backup 80
  361.                     ClrEol
  362.                     PrintLn "           @X04████  @X0ASorry but you already voted on that suggestion! @X04████@X0F"
  363.                     FClose 2
  364.                     Delay (4 * 182) / 10
  365.                     INTEGER007 = 15
  366.                     Goto LABEL009
  367.                 Endif
  368.                 Goto LABEL012
  369.                 :LABEL013
  370.                 FClose 2
  371.                 Backup 80
  372.                 ClrEol
  373.                 Print "@X0BWould you like to vote @X0A(@X0EF@X0A)@X0Bor or @X0A(@X0EA@X0A)@X0Bgainst #@X0C ", STRING006, "@X0F "
  374.                 InputStr "_", STRING027, 14, 1, "FA", 0 + 8
  375.                 If (STRING027 == "A") Goto LABEL014
  376.                 Backup 80
  377.                 ClrEol
  378.                 PrintLn "      @X04████ @X0BYour vote has been noted for # @X0E", STRING006, "@X0B thank you for voting! @X04████@X0F"
  379.                 FAppend 3, PPEPath() + PPEName() + ".nam", 2, 0
  380.                 FPutLn 3, STRING022 + ";" + Strip(U_Name(), " ")
  381.                 FClose 3
  382.                 FOpen 4, PPEPath() + PPEName() + ".DAT", 0, 0
  383.                 For INTEGER002 = INTEGER004 To INTEGER005
  384.                     FGet 4, TSTRING007(INTEGER002)
  385.                 Next
  386.                 FClose 4
  387.                 STRING049 = Left(TSTRING007(STRING006), 5)
  388.                 STRING048 = Mid(TSTRING007(STRING006), 7, 5)
  389.                 STRING017 = Mid(TSTRING007(STRING006), 13, 6)
  390.                 STRING043 = Mid(TSTRING007(STRING006), 20, 1)
  391.                 STRING018 = Mid(TSTRING007(STRING006), 22, 74)
  392.                 STRING049 = STRING049 + 1
  393.                 STRING049 = "0000" + STRING049
  394.                 STRING049 = Right(STRING049, 5)
  395.                 TSTRING007(STRING006) = STRING049 + STRING010 + STRING048 + STRING010 + STRING017 + STRING010 + STRING043 + STRING010 + STRING018
  396.                 FOpen 5, PPEPath() + PPEName() + ".DAT", 2, 0
  397.                 For INTEGER002 = INTEGER004 To INTEGER005
  398.                     FPutLn 5, TSTRING007(INTEGER002)
  399.                 Next
  400.                 FClose 5
  401.                 INTEGER007 = 15
  402.                 Delay (2 * 182) / 10
  403.                 BOOLEAN002 = 0
  404.                 FCloseAll
  405.                 Goto LABEL008
  406.                 :LABEL014
  407.                 Backup 80
  408.                 ClrEol
  409.                 PrintLn "      @X04████ @X0BYour vote has been noted against # @X0E", STRING006, "@X0B thank you for voting! @X04████@X0F"
  410.                 FAppend 3, PPEPath() + PPEName() + ".NAM", 2, 0
  411.                 FPutLn 3, STRING022 + ";" + Strip(U_Name(), " ")
  412.                 FClose 3
  413.                 FOpen 2, PPEPath() + PPEName() + ".DAT", 0, 0
  414.                 For INTEGER002 = INTEGER004 To INTEGER005
  415.                     FGet 2, TSTRING007(INTEGER002)
  416.                 Next
  417.                 FClose 2
  418.                 STRING028 = Left(TSTRING007(STRING006), 5)
  419.                 STRING029 = Mid(TSTRING007(STRING006), 7, 5)
  420.                 STRING017 = Mid(TSTRING007(STRING006), 13, 6)
  421.                 STRING043 = Mid(TSTRING007(STRING006), 20, 1)
  422.                 STRING018 = Mid(TSTRING007(STRING006), 22, 74)
  423.                 STRING028 = STRING028
  424.                 STRING029 = STRING029 + 1
  425.                 STRING029 = "0000" + STRING029
  426.                 STRING029 = Right(STRING029, 5)
  427.                 TSTRING007(STRING006) = STRING028 + STRING010 + STRING029 + STRING010 + STRING017 + STRING010 + STRING043 + STRING010 + STRING018
  428.                 FOpen 2, PPEPath() + PPEName() + ".DAT", 2, 0
  429.                 For INTEGER002 = INTEGER004 To INTEGER005
  430.                     FPutLn 2, TSTRING007(INTEGER002)
  431.                 Next
  432.                 FClose 2
  433.                 INTEGER007 = 15
  434.                 Delay (2 * 182) / 10
  435.                 BOOLEAN002 = 0
  436.                 FCloseAll
  437.                 Goto LABEL008
  438.                 :LABEL015
  439.                 PrintLn "@X03─────────────────────────────────────────────────────────────────────────────@X0F"
  440.                 If (CurSec() >= SysopSec()) PrintLn "@X03 Sysop only commands - @X0A(@X0ED@X0A)@X03elete a Suggestion / @X0A(@X0EE@X0A)@X03dit the notes file"
  441.                 InputStr "@X0B@X0A(@X0EV@X0A)@X0Bote / @X0A(@X0EA@X0A)@X0Bdd your own / @X0A(@X0EH@X0A)@X0Belp / @X0A(@X0EM@X0A)@X0Bore / @X0A(@X0ET@X0A)@X0Boggle / @X0A(@X0EN@X0A)@X0Botes @X8D@X0B / @X0A(@X0CQ@X0A)@X0Cuit _", STRING005, 15, 1, "TVAMHQNBDE", 0 + 8
  442.                 INTEGER007 = INTEGER007 + 15
  443.                 If ((STRING005 == "T") && (BOOLEAN001 == 0)) Then
  444.                     BOOLEAN001 = 1
  445.                     INTEGER007 = 15
  446.                     Goto LABEL009
  447.                 ElseIf ((STRING005 == "T") && (BOOLEAN001 == 1)) Then
  448.                     BOOLEAN001 = 0
  449.                     INTEGER007 = 15
  450.                     Goto LABEL009
  451.                 Endif
  452.                 If (STRING005 == "M") Return
  453.                 If (STRING005 == "V") Goto LABEL011
  454.                 If (STRING005 == "A") Goto LABEL010
  455.                 If (STRING005 == "H") Goto LABEL018
  456.                 If ((STRING005 == "D") && (CurSec() >= SysopSec())) Goto LABEL019
  457.                 If ((STRING005 == "E") && (CurSec() >= SysopSec())) Goto LABEL028
  458.                 If (STRING005 == "B") Goto LABEL026
  459.                 If (STRING005 == "N") Goto LABEL027
  460.             Case "Q"
  461.                 Gosub LABEL017
  462.                 Cls
  463.             Case Else
  464.                 Return
  465.                 :LABEL016
  466.                 Cls
  467.                 PrintLn STRING001
  468.                 PrintLn STRING002
  469.                 PrintLn STRING003
  470.                 Return
  471.                 :LABEL017
  472.                 Backup 80
  473.                 ClrEol
  474.                 PrintLn "                 @X84████  @X0AOne moment please, sorting data.... @X84 ████ @X0F"
  475.                 FOpen 5, PPEPath() + PPEName() + ".DAT", 0, 0
  476.                 For INTEGER001 = 0 To INTEGER005
  477.                     FGet 5, TSTRING014(INTEGER001)
  478.                 Next
  479.                 FClose 5
  480.                 Sort TSTRING014, TINTEGER008
  481.                 FCreate 7, PPEPath() + PPEName() + ".SRT", 2, 0
  482.                 For INTEGER001 = 0 To INTEGER005
  483.                     FPutLn 7, TSTRING014(TINTEGER008(INTEGER001))
  484.                 Next
  485.                 FClose 7
  486.                 FCloseAll
  487.                 FCreate 4, PPEPath() + PPEName() + ".DAT", 2, 0
  488.                 While (INTEGER005 <> 0) Do
  489.                     STRING035 = ReadLine(PPEPath() + PPEName() + ".SRT", INTEGER005)
  490.                     FPutLn 4, STRING035
  491.                     Dec INTEGER005
  492.                 EndWhile
  493.                 FClose 4
  494.                 Return
  495.                 :LABEL018
  496.                 INTEGER007 = 15
  497.                 Cls
  498.                 DispFile PPEPath() + PPEName() + "1" + ".hlp", 2 + 1 + 4
  499.                 Newlines 1
  500.                 Print "                      @X0APress your @X0E<@X84ENTER@X0E>@X0A key to continue@X0F"
  501.                 InputStr "_", STRING019, 15, 1, Mask_Ascii(), 0
  502.                 Cls
  503.                 DispFile PPEPath() + PPEName() + "2" + ".hlp", 2 + 1 + 4
  504.                 Newlines 1
  505.                 Print "                      @X0APress your @X0E<@X84ENTER@X0E>@X0A key to continue@X0F"
  506.                 InputStr "_", STRING019, 15, 1, Mask_Ascii(), 0
  507.                 Goto LABEL009
  508.                 :LABEL019
  509.                 FCloseAll
  510.                 Backup 80
  511.                 ClrEol
  512.                 Print "   @X0A  Suggestion Number to @X8ADelete@X0A # @X0E(@X0C1@X0E-@X0C", INTEGER005, "@X0E) @X0A/ @X0E(@X0CQ@X0E)@X0Cuit@X0F "
  513.                 InputStr "_", STRING020, 14, 3, "0123456789Q", 0 + 8
  514.                 If (STRING020 == "Q") Then
  515.                     INTEGER007 = 15
  516.                     BOOLEAN002 = 0
  517.                     Goto LABEL008
  518.                 Endif
  519.                 STRING033 = ReadLine(PPEPath() + PPEName() + ".dat", STRING020)
  520.                 STRING033 = Mid(STRING033, 13, 6)
  521.                 FOpen 3, PPEPath() + PPEName() + ".$$$", 2, 0
  522.                 FOpen 4, PPEPath() + PPEName() + ".Nam", 0, 0
  523.                 :LABEL020
  524.                 If (Ferr(4)) Goto LABEL022
  525.                 FGet 4, STRING034
  526.                 If (Mid(STRING034, 13, 6) == STRING033) Goto LABEL021
  527.                 If (Mid(STRING034, 13, 6) <> STRING033) FPutLn 3, STRING034
  528.                 :LABEL021
  529.                 Goto LABEL020
  530.                 :LABEL022
  531.                 FClose 4
  532.                 FClose 3
  533.                 Rename PPEPath() + PPEName() + ".Nam", PPEPath() + PPEName() + ".Man"
  534.                 Rename PPEPath() + PPEName() + ".$$$", PPEPath() + PPEName() + ".Nam"
  535.                 FOpen 5, PPEPath() + PPEName() + ".%%%", 2, 0
  536.                 FOpen 6, PPEPath() + PPEName() + ".DAT", 0, 0
  537.                 :LABEL023
  538.                 If (Ferr(6)) Goto LABEL025
  539.                 FGet 6, STRING034
  540.                 If (Mid(STRING034, 13, 6) == STRING033) Goto LABEL024
  541.                 FPutLn 5, STRING034
  542.                 :LABEL024
  543.                 Goto LABEL023
  544.                 :LABEL025
  545.                 FClose 6
  546.                 FClose 5
  547.                 FCloseAll
  548.                 Copy PPEPath() + PPEName() + ".Dat", PPEPath() + PPEName() + ".Tad"
  549.                 Delete PPEPath() + PPEName() + ".Dat"
  550.                 Copy PPEPath() + PPEName() + ".%%%", PPEPath() + PPEName() + ".Dat"
  551.                 Delete PPEPath() + PPEName() + ".%%%"
  552.                 INTEGER006 = INTEGER006 - 1
  553.                 FOpen 2, PPEPath() + PPEName() + ".Cfg", 2, 0
  554.                 FPutLn 2, INTEGER006
  555.                 FClose 2
  556.                 If (Exist(PPEPath() + String(STRING033) + ".Not")) Delete PPEPath() + String(STRING033) + ".Not"
  557.                 BOOLEAN002 = 0
  558.                 INTEGER007 = 15
  559.                 Goto LABEL008
  560.                 :LABEL026
  561.                 Cls
  562.                 Newlines 4
  563.                 PrintLn "@POS:25@@X10┌─────────────────────────────@X19┐@X0F"
  564.                 PrintLn "@POS:25@@X10│    @X1ASuggestion Box! v3.02@X1C    @X19│@X0F"
  565.                 PrintLn "@POS:25@@X10│@X1E  (c)96 Practical Computer   @X19│@X0F"
  566.                 PrintLn "@POS:25@@X10│@X16▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀@X19│@X0F"
  567.                 PrintLn "@POS:25@@X10│                             @X19│@X0F"
  568.                 PrintLn "@POS:25@@X10│  @X1EProgrammed by: Bob Watson  @X19│@X0F"
  569.                 PrintLn "@POS:25@@X10│                             @X19│@X0F"
  570.                 PrintLn "@POS:25@@X10│@X1C @X1APractical Computer Services@X1C @X19│@X0F"
  571.                 PrintLn "@POS:25@@X10│     @X1A483 Klockner Road       @X19│@X0F"
  572.                 PrintLn "@POS:25@@X10│    @X1AHamilton, NJ  08619      @X19│@X0F"
  573.                 PrintLn "@POS:25@@X10└@X19─────────────────────────────┘@X0F"
  574.                 Delay (5 * 182) / 10
  575.                 Goto LABEL009
  576.                 :LABEL027
  577.                 Backup 80
  578.                 ClrEol
  579.                 Print " @X0BView which note file@X0A  @X0E(@X0CQ@X0E)@X0Cuit@X0F "
  580.                 InputStr "_", STRING039, 14, 3, "0123456789Q", 0 + 8
  581.                 If (STRING039 == "Q") Then
  582.                     INTEGER007 = 15
  583.                     BOOLEAN002 = 0
  584.                     Goto LABEL008
  585.                 Endif
  586.                 STRING045 = ReadLine(PPEPath() + PPEName() + ".DAT", STRING039)
  587.                 STRING022 = Mid(STRING045, 13, 6)
  588.                 STRING040 = Mid(STRING045, 20, 1)
  589.                 If (STRING040 == "Y") Then
  590.                     Cls
  591.                     DispFile PPEPath() + String(STRING022) + ".Not", 0
  592.                     Newlines 1
  593.                     Print "                      @X0APress your @X0E<@X84ENTER@X0E>@X0A key to continue@X0F"
  594.                     InputStr "_", STRING019, 15, 1, Mask_Ascii(), 0
  595.                     BOOLEAN002 = 0
  596.                     INTEGER007 = 15
  597.                     Goto LABEL008
  598.                 Else
  599.                     Backup 80
  600.                     ClrEol
  601.                     PrintLn "@X0A @X0E████ @X0BSorry but you chose a Suggestion with no note @X0A(@X0Blook for the @X8D@X0A) @X0E████@X0F"
  602.                     Delay (4 * 182) / 10
  603.                     BOOLEAN002 = 0
  604.                 Endif
  605.                 INTEGER007 = 15
  606.                 Goto LABEL008
  607.                 :LABEL028
  608.                 Backup 80
  609.                 ClrEol
  610.                 Print " @X0AAdd a note to which Suggestion@X0A # @X0E(@X0C1@X0E-@X0C", INTEGER005, "@X0E) @X0A/ @X0E(@X0CQ@X0E)@X0Cuit@X0F "
  611.                 InputStr "_", STRING039, 14, 3, "0123456789Q", 0 + 8
  612.                 If (STRING039 == "Q") Then
  613.                     INTEGER007 = 15
  614.                     BOOLEAN002 = 0
  615.                     Goto LABEL008
  616.                 Endif
  617.                 Newline
  618.                 STRING045 = ReadLine(PPEPath() + PPEName() + ".DAT", STRING039)
  619.                 STRING022 = Mid(STRING045, 13, 6)
  620.                 STRING040 = Mid(STRING045, 20, 1)
  621.                 STRING037 = Mid(STRING045, 22, 74)
  622.                 If (STRING040 == "Y") Then
  623.                     Backup 80
  624.                     ClrEol
  625.                     InputStr "@X0BThere is already a note for this Suggestion @X0A(@X0ED@X0A)@X0Belete or @X0A(@X0ER@X0A)@X0Beview it _", STRING041, 14, 1, "DR", 0 + 8
  626.                     For INTEGER002 = 1 To INTEGER005
  627.                         TSTRING007(INTEGER002) = ""
  628.                     Next
  629.                     Select Case (Upper(STRING041))
  630.                         Case "D"
  631.                             Delete PPEPath() + String(STRING022) + ".Not"
  632.                             FOpen 7, PPEPath() + PPEName() + ".DAT", 0, 0
  633.                             For INTEGER002 = 1 To INTEGER005
  634.                                 FGet 7, TSTRING007(INTEGER002)
  635.                             Next
  636.                             FClose 7
  637.                             FCloseAll
  638.                             STRING057 = Left(TSTRING007(STRING039), 5)
  639.                             STRING058 = Mid(TSTRING007(STRING039), 7, 5)
  640.                             STRING059 = Mid(TSTRING007(STRING039), 13, 6)
  641.                             STRING060 = "N"
  642.                             STRING061 = Mid(TSTRING007(STRING039), 22, 74)
  643.                             TSTRING007(STRING039) = STRING057 + STRING010 + STRING058 + STRING010 + STRING059 + STRING010 + STRING060 + STRING010 + STRING061
  644.                             FOpen 6, PPEPath() + PPEName() + ".DAT", 2, 0
  645.                             For INTEGER002 = 1 To INTEGER005
  646.                                 FPutLn 6, TSTRING007(INTEGER002)
  647.                             Next
  648.                             FClose 6
  649.                         Case "R"
  650.                             Cls
  651.                             DispFile PPEPath() + String(STRING022) + ".Not", 0
  652.                             Newlines 1
  653.                             Print "                      @X0APress your @X0E<@X84ENTER@X0E>@X0A key to continue@X0F"
  654.                             InputStr "_", STRING019, 15, 1, Mask_Ascii(), 0
  655.                     End Select
  656.                     BOOLEAN002 = 0
  657.                     Goto LABEL008
  658.                 Else
  659.                     INTEGER009 = 2
  660.                     Redim TSTRING036, 21
  661.                     Cls
  662.                     PrintLn "@X0AType an @X0CS@X0A on a blank line to @X0CSave@X0A, or a @X0CQ@X0A to @X0Cquit@X0A (no save)"
  663.                     Newline
  664.                     PrintLn "@X0E┌─────────@X0B1@X0E─────────@X0B2@X0E─────────@X0B3@X0E─────────@X0B4@X0E─────────@X0B5@X0E─────────@X0B6@X0E─────────@X0B7@X0E───────┐"
  665.                     TSTRING036(0) = "Date: " + String(Date())
  666.                     TSTRING036(1) = "  RE: " + Left(STRING037, 70)
  667.                     TSTRING036(2) = "-------------------------------------------------------------------------------"
  668.                     For INTEGER003 = 3 To 21
  669.                         InputStr "_", TSTRING036(INTEGER003), 11, 78, Mask_Ascii(), 0 + 256
  670.                         If (Upper(TSTRING036(INTEGER003)) == "S") Break
  671.                         If (Upper(TSTRING036(INTEGER003)) == "Q") Then
  672.                             BOOLEAN002 = 0
  673.                             Goto LABEL008
  674.                         Endif
  675.                         Inc INTEGER009
  676.                     Next
  677.                     INTEGER009 = INTEGER009
  678.                     FOpen 3, PPEPath() + String(STRING022) + ".Not", 2, 0
  679.                     For INTEGER010 = 0 To INTEGER009
  680.                         FPutLn 3, TSTRING036(INTEGER010)
  681.                     Next
  682.                     FClose 3
  683.                 Endif
  684.                 FOpen 2, PPEPath() + PPEName() + ".DAT", 0, 0
  685.                 For INTEGER002 = 1 To INTEGER005
  686.                     FGet 2, TSTRING007(INTEGER002)
  687.                 Next
  688.                 FClose 2
  689.                 FCloseAll
  690.                 STRING045 = ReadLine(PPEPath() + PPEName() + ".DAT", STRING039)
  691.                 STRING030 = Left(STRING045, 5)
  692.                 STRING031 = Mid(STRING045, 7, 5)
  693.                 STRING032 = Mid(STRING045, 13, 6)
  694.                 STRING046 = "Y"
  695.                 STRING047 = Mid(STRING045, 22, 74)
  696.                 TSTRING007(STRING039) = STRING030 + STRING010 + STRING031 + STRING010 + STRING032 + STRING010 + STRING046 + STRING010 + STRING047
  697.                 FOpen 6, PPEPath() + PPEName() + ".DAT", 2, 0
  698.                 For INTEGER011 = 1 To INTEGER005
  699.                     FPutLn 6, TSTRING007(INTEGER011)
  700.                 Next
  701.                 FClose 6
  702.                 BOOLEAN002 = 0
  703.                 INTEGER007 = 15
  704.                 Goto LABEL008
  705.             Endif
  706.     End Select
  707.     If (Exist(PPEPath() + "Waiting.lst")) Then
  708.         FOpen 1, PPEPath() + "Waiting.Lst", 0, 0
  709.         :LABEL029
  710.         If (Ferr(1)) Goto LABEL030
  711.         FGet 1, INTEGER012
  712.         Broadcast INTEGER012, INTEGER012, "Suggestion door now open!"
  713.         Goto LABEL029
  714.         :LABEL030
  715.         FClose 1
  716.         Delete PPEPath() + "waiting.lst"
  717.     Endif
  718.     Delete PPEPath() + "door.lck"
  719.     End
  720.  
  721. ;------------------------------------------------------------------------------
  722.  
  723.     Procedure PROC001()
  724.  
  725.     FOpen 1, PPEPath() + "UNIVERSL.KEY", 0, 0
  726.     FDefIn 1
  727.     For INTEGER016 = 1 To 3
  728.         FDGet TSTRING024(INTEGER016)
  729.     Next
  730.     FClose 1
  731.     STRING023 = TSTRING024(1) + TSTRING024(2)
  732.     STRING023 = Strip(STRING023, " ")
  733.     For INTEGER017 = 1 To Len(STRING023)
  734.         TINTEGER018(INTEGER017) = Asc(Mid(STRING023, INTEGER017, 1))
  735.     Next
  736.     INTEGER014 = 0
  737.     For INTEGER017 = 1 To 99
  738.         INTEGER014 = INTEGER014 + TINTEGER018(INTEGER017)
  739.     Next
  740.     INTEGER015 = INTEGER014 * 659
  741.     INTEGER013 = INTEGER015
  742.     BOOLEAN003 = 0
  743.     If (INTEGER015 <> TSTRING024(3)) Then
  744.         BOOLEAN003 = 0
  745.     Else
  746.         BOOLEAN003 = 1
  747.     Endif
  748.  
  749.     EndProc
  750.  
  751.  
  752. ;------------------------------------------------------------------------------
  753.  
  754.     Procedure PROC002()
  755.  
  756.     FOpen 1, PPEPath() + "UNI.KEY", 0, 0
  757.     FDefIn 1
  758.     For INTEGER016 = 1 To 3
  759.         FDGet TSTRING024(INTEGER016)
  760.     Next
  761.     FClose 1
  762.     STRING023 = TSTRING024(1) + TSTRING024(2)
  763.     STRING023 = Strip(STRING023, " ")
  764.     For INTEGER017 = 1 To Len(STRING023)
  765.         TINTEGER018(INTEGER017) = Asc(Mid(STRING023, INTEGER017, 1))
  766.     Next
  767.     INTEGER014 = 0
  768.     For INTEGER017 = 1 To 99
  769.         INTEGER014 = INTEGER014 + TINTEGER018(INTEGER017)
  770.     Next
  771.     INTEGER015 = INTEGER014 * 659
  772.     INTEGER013 = INTEGER015
  773.     BOOLEAN003 = 0
  774.     If (INTEGER015 <> TSTRING024(3)) Then
  775.         BOOLEAN003 = 0
  776.     Else
  777.         BOOLEAN003 = 1
  778.     Endif
  779.  
  780.     EndProc
  781.  
  782.  
  783. ;------------------------------------------------------------------------------
  784. ;
  785. ; Usage report (before postprocessing)
  786. ;
  787. ; ■ Statements used :
  788. ;
  789. ;    2       End
  790. ;    12      Cls
  791. ;    13      ClrEol
  792. ;    162     Goto 
  793. ;    200     Let 
  794. ;    8       Print 
  795. ;    43      PrintLn 
  796. ;    102     If 
  797. ;    4       DispFile 
  798. ;    5       FCreate 
  799. ;    25      FOpen 
  800. ;    4       FAppend 
  801. ;    35      FClose 
  802. ;    15      FGet 
  803. ;    20      FPutLn 
  804. ;    2       GetUser
  805. ;    6       Delete 
  806. ;    1       Log 
  807. ;    14      InputStr 
  808. ;    6       Gosub 
  809. ;    4       Return
  810. ;    10      Delay 
  811. ;    1       Inc 
  812. ;    1       Dec 
  813. ;    3       Newline
  814. ;    9       Newlines 
  815. ;    1       Tokenize 
  816. ;    3       GetToken 
  817. ;    1       Broadcast 
  818. ;    1       RdUNet 
  819. ;    1       WrUNet 
  820. ;    13      Backup 
  821. ;    2       Rename 
  822. ;    2       FDefIn 
  823. ;    2       FDGet 
  824. ;    5       Redim 
  825. ;    2       Copy 
  826. ;    1       Sort 
  827. ;    10      FCloseAll
  828. ;    2       EndProc
  829. ;
  830. ;
  831. ; ■ Functions used :
  832. ;
  833. ;    12      *
  834. ;    10      /
  835. ;    230     +
  836. ;    5       -
  837. ;    56      ==
  838. ;    4       <>
  839. ;    29      <
  840. ;    23      <=
  841. ;    3       >
  842. ;    58      >=
  843. ;    67      !
  844. ;    63      &&
  845. ;    24      ||
  846. ;    7       Len(
  847. ;    9       Upper()
  848. ;    35      Mid()
  849. ;    11      Left()
  850. ;    2       Right()
  851. ;    5       Ferr()
  852. ;    4       Asc()
  853. ;    2       LTrim()
  854. ;    1       Random()
  855. ;    1       Date()
  856. ;    5       U_Name()
  857. ;    7       Strip()
  858. ;    7       String()
  859. ;    6       Mask_Ascii()
  860. ;    71      PPEPath()
  861. ;    3       PcbNode()
  862. ;    11      ReadLine()
  863. ;    6       SysopSec()
  864. ;    1       UN_Stat()
  865. ;    1       UN_Name()
  866. ;    7       CurSec()
  867. ;    8       Exist()
  868. ;    2       Abs()
  869. ;    52      PPEName()
  870. ;    1       Mixed()
  871. ;
  872. ;------------------------------------------------------------------------------
  873. ;
  874. ; Analysis flags : s
  875. ;
  876. ; s - Sysop level access ■ 5
  877. ;     Program is reading the sysop access level, this may be normal
  878. ;     but still it is very suspect. It is the best way to give a user
  879. ;     all priviledges. Check!
  880. ;     ■ Search for : SYSOPSEC()
  881. ;
  882. ;------------------------------------------------------------------------------
  883. ;
  884. ; Postprocessing report
  885. ;
  886. ;    23      For/Next
  887. ;    1       While/EndWhile
  888. ;    29      If/Then or If/Then/Else
  889. ;    2       Select Case
  890. ;
  891. ;------------------------------------------------------------------------------
  892. ;                 AEGiS Corp - Break the routines, code against the machines!
  893. ;------------------------------------------------------------------------------
  894.